package TCP;

import javax.swing.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 日测试07 - GUI聊天客户端测试类
 * 该类用于创建一个简单的图形用户界面（GUI）聊天客户端测试。
 */
public class Day07_GUIServer_Test {
    public static void main(String[] args) {
        // 创建Jack类的实例，即启动客户端界面
        Jack1 jack1 = new Jack1();

    }
}

/**
 * Jack类 - 继承自JFrame，构成客户端主窗口
 * 该类定义了客户端图形用户界面的主要组件和布局。
 */
class Jack1 extends JFrame {
    // 文本区域，用于显示聊天信息
    JTextArea jTextArea;
    // 文本字段，用于用户输入聊天信息
    JTextField jtextField;
    // 按钮，用于发送聊天信息
    JButton button;

    /**
     * Jack类构造函数，初始化客户端GUI界面
     * 该函数设置窗口的基本属性，如位置、大小、标题，并初始化主要组件。
     */
    public Jack1() {
        // 创建并添加标签到窗口，显示区域说明
        JLabel jlabel = new JLabel("这是显示区域：");
        jlabel.setBounds(50, 20, 100, 50);
        add(jlabel);

        // 设置窗口布局为null，以便手动定位和大小调整组件
        setLayout(null);

        // 初始化并设置文本区域，用于显示聊天记录
        jTextArea = new JTextArea();
        jTextArea.setBounds(100, 100, 200, 100);

        add(jTextArea);
        // 设置文本区域为只读，防止用户编辑显示的聊天信息
        jTextArea.setEditable(false);
        /*================================================*/
        jtextField = new JTextField();
        jtextField.setBounds(100, 250, 200, 50);
        add(jtextField);

        button = new JButton("发送");
        button.setBounds(330, 250, 100, 50);
        add(button);


        // 初始化窗口属性
        setVisible(true);
        setBounds(100, 100, 500, 500);
        setTitle("服务器");
        setResizable(false);

        // TODO: 初始化显示区域、输入字段和发送按钮的代码省略
//1.架设服务器
        try {

            ServerSocket serverSocket = new ServerSocket(8888);
            jTextArea.append("服务器架设成功\n");
            Socket socket = serverSocket.accept();
            jTextArea.append("我是服务器，客户端已经连接成功！");
            //2.接收客户端消息
            InputStream  inputStream= socket.getInputStream();
            //转换为字符流
            InputStreamReader inputStreamReader=new InputStreamReader(inputStream);
            //存储在缓存区类中
            BufferedReader bufferedReader=new BufferedReader(inputStreamReader);

            while (true) {
                String infoClient = bufferedReader.readLine();
                jTextArea.append("客户端："+infoClient+'\n');

            }

        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }


}
